package sample.test.cc.sampleodo;

import sample.test.agentodo.StateOdo;
import sample.test.agentodo.GuardOdoModify;
import sample.test.agentodo.AgentOdo;
import sample.test.agentodo.BehaviorOdo;
import BESA.Agent.StructBESA;
import BESA.SystemLevel.AdmBESA;
import BESA.util.ReportBESA;

public class MainOdo {

	private static final String IP_ADD = "169.254.30.100";
	private static final int RMI_PORT = 9876;
	private static final String MC_ADD = "230.0.0.1";
	private static final int MC_PORT = 2222;
	private static final int GCC_PORT = 9870;

	public static void main(String[] args) {
		// Crear administrador local - Uno solo por maquina virtual
		try {
			AdmBESA admLocal = AdmBESA.createInstance("Asma_3", 1.0, IP_ADD,
					RMI_PORT, MC_ADD, MC_PORT, GCC_PORT);
			testSleep(4000);

			StateOdo stateAgOdo = new StateOdo(3);
			stateAgOdo.setStep(2);
			double passwdAgOdo = 1.0;
			
			StructBESA structOdo = new StructBESA();
			structOdo.addBehavior(BehaviorOdo.class.getName());
			structOdo.bindGuard(GuardOdoModify.class.getName(),
					BehaviorOdo.class.getName());
			AgentOdo agOdo = new AgentOdo("odo", stateAgOdo, structOdo,
					new Double(passwdAgOdo));
//			AgHandler ah = admLocal.getHandlerByAid(agOdo.getAid());
//			String evType = GuardOdoModify.class.getName();
//			DataOdo datOdo = new DataOdo("INC");
//			EventBESA ev = new EventBESA(evType, datOdo);
//			try {
//				ReportBESA.debug(4, "[MainOdo::testSend] ANTES DE SEND - "
//						+ evType + ":" + datOdo.getStr() + " - Evento="
//						+ ev.getStamp());
//				ah.sendEvent(ev);
//				ah.sendEvent(ev);
//				ah.sendEvent(ev);
//			} catch (ExceptionBESA e) {
//				ReportBESA
//						.error("[main:testSend]:Prueba env�o event con handle - "
//								+ e.toString());
//			}
			
		} catch (Exception e) {
			ReportBESA.error("[main] " + e.getMessage());
			System.out.println("Error");
		}
		
	}// fin main

	private static void testSleep(long m) {
		try {
			Thread.sleep(m);
		} catch (InterruptedException ie) {
			ReportBESA.error("[main]" + ie.getMessage());
		}
	}
}
